package com.xcm.dao;

import com.xcm.model.TbDeviceGroup;
import com.xcm.model.dto.DeviceGroupListDTO;
import com.xcm.model.dto.DeviceGroupTreeListDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DeviceGroupMapper {

	/**
	 * 所有终端分组列表
	 *
	 * @return List<DeviceGroupListDTO>
	 */
	List<DeviceGroupListDTO> listAllDeviceGroup();

	/**
	 * 保存终端分组
	 *
	 * @param deviceGroup TbDeviceGroup类型对象
	 */
	void saveDeviceGroup(TbDeviceGroup deviceGroup);

	/**
	 * 更新终端分组
	 *
	 * @param deviceGroup TbDeviceGroup类型对象
	 */
	void updateDeviceGroup(TbDeviceGroup deviceGroup);

	/**
	 * 获取终端分组
	 *
	 * @param deviceGroupId 终端分组ID
	 */
	TbDeviceGroup getDeviceGroupById(Long deviceGroupId);

	/**
	 * 删除终端分组
	 *
	 * @param deviceGroupId 终端分组ID
	 */
	void deleteDeviceGroupById(Long deviceGroupId);

	/**
	 * 通过父ID获取终端分组列表
	 *
	 * @param parentId 父ID
	 * @return List<TbDeviceGroup>
	 */
	List<TbDeviceGroup> listDeviceGroupByParentId(Long parentId);

	/**
	 * 根据分组名查找终端分组
	 *
	 * @param groupName 分组名
	 * @return TbDeviceGroup
	 */
	TbDeviceGroup getDeviceGroupByGroupName(String groupName);

	/**
	 * 根据分组码获取终端分组
	 *
	 * @param groupCode 分组码
	 * @return TbDeviceGroup
	 */
	TbDeviceGroup getDeviceGroupByGroupCode(String groupCode);

	/**
	 * 所有终端树形分组列表
	 * @return
	 */
	List<DeviceGroupTreeListDTO> listAllDeviceGroupTree();

	/**
	 * 修改终端的分组
	 * @param groupCode 分组码
	 * @param deviceInfoId 终端id
	 */
    void moveDeviceGroup(@Param("groupCode") String groupCode, @Param("deviceInfoId") String deviceInfoId);
}
